package LeetCode.month01.day22;

import java.util.*;

public class No2841 {
    public static void main(String[] args) {
        int[] a = new int[]{10,9,7,1,7,6,9,9,9};
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < a.length; i++) {
            list.add(a[i]);
        }
        System.out.println(list);
        System.out.println(maxSum(list,3,3));
    }
    public static long maxSum(List<Integer> nums, int m, int k) {
        long res = 0;
        HashMap<Integer,Integer> map = new HashMap<>();
        long sum = 0;
        for (int i = 0; i < k; i++) {
            int n = nums.get(i);
            map.put(n,map.getOrDefault(n,0)+1);
            sum+=n;
        }
        int len = map.size();
        for (int i = k; i <nums.size(); i++) {
            int n = nums.get(i);
            if(len>=m){
                res = Math.max(sum,res);
            }
            if(!map.containsKey(n)){
                len++;
            }
            map.put(n,map.getOrDefault(n,0)+1);
            if(map.get(nums.get(i-k))==1){
                map.remove(nums.get(i-k));
                len--;
            }else{
                map.put(nums.get(i-k),map.get(nums.get(i-k))-1);
            }
            sum=sum+n-nums.get(i-k);
        }
        if(len>=m) return Math.max(sum,res);
        return res;
    }
}
